wrmsrl(MSR_LSTAR, saved_lstar);
wrmsrl(MSR_CSTAR, saved_cstar);
wrmsr(MSR_STAR, 0, (FLAT_RING3_CS32<<16) | __HYPERVISOR_CS);
- wrmsr(MSR_SYSCALL_MASK, EF_VM|EF_RF|EF_NT|EF_DF|EF_IE|EF_TF, 0U);
+ wrmsr(MSR_SYSCALL_MASK,
+ X86_EFLAGS_VM|X86_EFLAGS_RF|X86_EFLAGS_NT|
+ X86_EFLAGS_DF|X86_EFLAGS_IF|X86_EFLAGS_TF,
+ 0U);
if ( boot_cpu_data.x86_vendor == X86_VENDOR_INTEL )
{
/* IOPL privileges are virtualised. */
v->arch.iopl = (v->arch.guest_context.user_regs.eflags >> 12) & 3;
- v->arch.guest_context.user_regs.eflags &= ~EF_IOPL;
+ v->arch.guest_context.user_regs.eflags &= ~X86_EFLAGS_IOPL;
/* Ensure real hardware interrupts are enabled. */
- v->arch.guest_context.user_regs.eflags |= EF_IE;
+ v->arch.guest_context.user_regs.eflags |= X86_EFLAGS_IF;
cr4 = v->arch.guest_context.ctrlreg[4];
v->arch.guest_context.ctrlreg[4] = cr4 ? pv_guest_cr4_fixup(cr4) :
else
{
/* IOPL privileges are virtualised: merge back into returned eflags. */
- BUG_ON((c(user_regs.eflags) & EF_IOPL) != 0);
+ BUG_ON((c(user_regs.eflags) & X86_EFLAGS_IOPL) != 0);
c(user_regs.eflags |= v->arch.iopl << 12);
if ( !is_pv_32on64_domain(v->domain) )
struct cpu_user_regs *regs = guest_cpu_user_regs();
struct vcpu *v = current;
- if ( regs->eflags & EF_VM )
+ if ( regs->eflags & X86_EFLAGS_VM )
{
segr.sel = sel;
segr.base = (uint32_t)sel << 4;
PFEC_write_access);
return EXCRET_fault_fixed;
}
- wr_ad(edi, regs->edi + (int)((regs->eflags & EF_DF)
+ wr_ad(edi, regs->edi + (int)((regs->eflags & X86_EFLAGS_DF)
? -op_bytes : op_bytes));
break;
return EXCRET_fault_fixed;
}
guest_io_write(port, op_bytes, data, v, regs);
- wr_ad(esi, regs->esi + (int)((regs->eflags & EF_DF)
+ wr_ad(esi, regs->esi + (int)((regs->eflags & X86_EFLAGS_DF)
? -op_bytes : op_bytes));
break;
}
if ( !guest_mode(regs) )
{
- if ( regs->eflags & EF_TF )
+ if ( regs->eflags & X86_EFLAGS_TF )
{
#ifdef __x86_64__
void sysenter_entry(void);
(regs->rip <= (unsigned long)sysenter_eflags_saved) )
{
if ( regs->rip == (unsigned long)sysenter_eflags_saved )
- regs->eflags &= ~EF_TF;
+ regs->eflags &= ~X86_EFLAGS_TF;
goto out;
}
#endif
if ( !debugger_trap_fatal(TRAP_debug, regs) )
{
WARN_ON(1);
- regs->eflags &= ~EF_TF;
+ regs->eflags &= ~X86_EFLAGS_TF;
}
}
else
regs->rip = iret_saved.rip;
regs->cs = iret_saved.cs | 3; /* force guest privilege */
- regs->rflags = (iret_saved.rflags & ~(EF_IOPL|EF_VM)) | EF_IE;
+ regs->rflags = ((iret_saved.rflags & ~(X86_EFLAGS_IOPL|X86_EFLAGS_VM))
+ | X86_EFLAGS_IF);
regs->rsp = iret_saved.rsp;
regs->ss = iret_saved.ss | 3; /* force guest privilege */
v->trap_priority = v->old_trap_priority;
/* Restore upcall mask from supplied EFLAGS.IF. */
- vcpu_info(v, evtchn_upcall_mask) = !(iret_saved.rflags & EF_IE);
+ vcpu_info(v, evtchn_upcall_mask) = !(iret_saved.rflags & X86_EFLAGS_IF);
/* Saved %rax gets written back to regs->rax in entry.S. */
return iret_saved.rax;
/* Common SYSCALL parameters. */
wrmsr(MSR_STAR, 0, (FLAT_RING3_CS32<<16) | __HYPERVISOR_CS);
- wrmsr(MSR_SYSCALL_MASK, EF_VM|EF_RF|EF_NT|EF_DF|EF_IE|EF_TF, 0U);
+ wrmsr(MSR_SYSCALL_MASK,
+ X86_EFLAGS_VM|X86_EFLAGS_RF|X86_EFLAGS_NT|
+ X86_EFLAGS_DF|X86_EFLAGS_IF|X86_EFLAGS_TF,
+ 0U);
}
void init_int80_direct_trap(struct vcpu *v)
#include <asm/x86_32/regs.h>
#endif
-enum EFLAGS {
- EF_CF = 0x00000001,
- EF_PF = 0x00000004,
- EF_AF = 0x00000010,
- EF_ZF = 0x00000040,
- EF_SF = 0x00000080,
- EF_TF = 0x00000100,
- EF_IE = 0x00000200,
- EF_DF = 0x00000400,
- EF_OF = 0x00000800,
- EF_IOPL = 0x00003000,
- EF_IOPL_RING0 = 0x00000000,
- EF_IOPL_RING1 = 0x00001000,
- EF_IOPL_RING2 = 0x00002000,
- EF_NT = 0x00004000, /* nested task */
- EF_RF = 0x00010000, /* resume */
- EF_VM = 0x00020000, /* virtual mode */
- EF_AC = 0x00040000, /* alignment */
- EF_VIF = 0x00080000, /* virtual interrupt */
- EF_VIP = 0x00100000, /* virtual interrupt pending */
- EF_ID = 0x00200000, /* id */
-};
-
#define guest_mode(r) \
({ \
unsigned long diff = (char *)guest_cpu_user_regs() - (char *)(r); \
#include <xen/types.h>
#include <public/xen.h>
-#define vm86_mode(r) ((r)->eflags & EF_VM)
+#define vm86_mode(r) ((r)->eflags & X86_EFLAGS_VM)
#define ring_0(r) (((r)->cs & 3) == 0)
#define ring_1(r) (((r)->cs & 3) == 1)
#define ring_2(r) (((r)->cs & 3) == 2)